import http from 'wechat-http'

http.baseURL = 'https://live-api.itheima.net'
// 请求拦截器
http.intercept.request = (config) =>{
  const token = getApp().token
  if (token && !config.url.includes('/refreshToken')) {
    config.header = config.header || {}
    config.header.Authorization = token
    
  }
  return config
}
// 响应拦截器
http.intercept.response = async(res) =>{
  // 判断接口返回状态码,如果 401代表token 失效
  if (res.statusCode === 401) {
    // 如果刷新 token 接口返回401， 代表 refreshToken失效 ，要跳转到登录页
    if(res.config.url.includes('/refreshToken')){
      // 获取页面历史债
      const pageStack = getCurrentPages()
      // 获取当前页面路由信息
      const getCurrentPage = pageStack[pageStack.length - 1]
      // 跳转到登录页
      wx.redirectTo({
        url:`/pages/login/index?returnUrl=/${getCurrentPage.route}`
      })
      return res.data
    }
    // 调用刷新 token 接口， 并以请求头的方式 将refreshToken 传递给后端
    const {code, data} = await wx.http({
      url:'/refreshToken',
      method: 'post',
      header:{
        Authorization: getApp().refreshToken
      }
    })
    if(code !== 10000) return wx.utils.toast()
    // console.log(data);
    // 把刷新token接口返回的最新的 token 和refreshToken 储存起来
    getApp().setToken(data.token,data.refreshToken)

    // 重新调用之前401 的接口，拿到正确的数据返回
    console.log(res.config);
    const resurl = await wx.http({
      ...res.config,

    })
    return resurl
  }
  // 解套
  // 剥离无用数据
  return res.data
}

wx.http = http

export default http